아이템12
함수 표현식에 타입 적용하기
- 타입스크립트에선
함수 문장과함수 표현식을 다르게 인식한다. - 함수의 매개변수부터 반환식까지의 재사용이 가능한 타입스크립트에선 되도록 함수 표현식을 사용하는 것이 좋다.
// 함수 선언문 (문장)
function rollDice1(sides: number): number {
/*...*/
}
// 함수 표현식
const rollDice2 = function (sides: number): number {
/*...*/
};
const rollDice3 = (sides: number): number => {
/*...*/
};
// 재활용 예시
type BinaryFn = (a: number, b: number) => number;
const add: BinaryFn = (a: number, b: number) => { return a + b };
const sub: BinaryFn = (a: number, b: number) => { return a - b };
const mul: BinaryFn = (a: number, b: number) => { return a * b };
const div: BinaryFn = (a: number, b: number) => { return a / b };
FETCH에서 사용
const checkedFetch: typeof fetch = async(input, init) => {
const response = await fetch(input, init)
if(!response.ok) {
throw new Error(`Request failed: ${response.status}`)
}
}
정리
- 같은 타입 시그니처 반보고디면 함수 타입을 분리해보자
- 다른 함수의 시그니처 참조를 위해선
typeof fn을 사용해보자